<?php
declare (strict_types=1);

namespace app\api\controller;

use app\BaseController;
use app\common\model\Auth;
use think\exception\ValidateException;
use think\Request;

class Auths extends BaseController
{
    /**
     * 查询权限
     *
     * @return \think\response\Json
     */
    public function index()
    {
        //接收参数
        $keywords = input('get.keywords', "");
        //调用模型查询权限菜单
        $auths = Auth::getAuths($keywords)->toArray();
        //判断请求类型  递归 ？ 树状？
        if (input('get.type') != 'true') {
            //处理成层级显示
            $auths = get_cate_list($auths);
            return success($auths);
        }
        //处理成层级显示
        $auths = get_cate_list($auths);
        // 返回数据
        return success($auths);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 新增权限
     *
     * @param \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $data = $request->post();
        //接收数据验证
        try {
            $validated = $this->validate($data, [
                'auth_name|权限名称' => 'require',
                'pid|父级权限名称' => 'require',
                'is_nav|是否是菜单' => 'require',

            ]);
        } catch (ValidateException $exception) {
            return fail($exception->getMessage());
        }
        //默认为顶级权限
        $data['level'] = 0;
        $data['pid_path'] = 0;
        //判断添加的是否为顶级权限
        if ($data['pid'] != 0) {
            //查询处父级权限信息
            $parentAuth = Auth::getAuth($validated['pid']);
            //level：父级权限的level+1
            $data['level'] = $parentAuth['level'] + 1;
            //pid_path：父级权限的pid_path+父级权限的id
            $data['pid_path'] = $parentAuth['pid_path'] . '_' . $parentAuth['id'];
        }
        try {
            $addAuth = Auth::addAuth($data);
        } catch (ValidateException $exception) {
            return fail($exception->getMessage());
        }
        return success($addAuth);

    }

    /**
     * 显示指定的资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function read($id)
    {
        //判断传入id必须为纯数字且不是0
        if (!is_numeric($id) || $id == 0) {
            return fail("参数格式不正确");
        }
        //查询详情信息返回
        try {
            $authDate = Auth::getAuth($id);
        } catch (ValidateException$exception) {
            return fail($exception->getMessage());
        }
        return success($authDate);

    }

    /**
     * 显示编辑资源表单页.
     *
     * @param int $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param \think\Request $request
     * @param int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
